/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Dominio;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author Agustin
 */
public class Usuario {

    private String nombre_usuario;
    private String contraseña;
    private Integer experiencia;
    private Integer experienciaEx;
    private Date fecha_inscripcion;
    private Boolean activo;
    private String nombre;
    private Especialidad especialidad;
    private List<Calificacion> calificaciones;
    private double VHU;

    public Integer getExperienciaEx() {
        return experienciaEx;
    }

    public void setExperienciaEx(Integer experienciaEx) {
        this.experienciaEx = experienciaEx;
    }

    public double getVHU() {
        return VHU;
    }

    public void setVHU(double VHU) {
        this.VHU = VHU;
    }

    public Boolean getActivo() {
        return activo;
    }

    public void setActivo(Boolean activo) {
        this.activo = activo;
    }

    public List<Calificacion> getCalificaciones() {
        return calificaciones;
    }

    public void setCalificaciones(List<Calificacion> calificaciones) {
        this.calificaciones = calificaciones;
    }

    public Integer getExperiencia() {
        return experiencia;
    }

    public void setExperiencia(Integer experiencia) {
        this.experiencia = experiencia;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public boolean isActivo() {
        return activo;
    }

    public void setActivo(boolean activo) {
        this.activo = activo;
    }

    public String getContraseña() {
        return contraseña;
    }

    public void setContraseña(String contraseña) {
        this.contraseña = contraseña;
    }

    public Especialidad getEspecialidad() {
        return especialidad;
    }

    public void setEspecialidad(Especialidad especialidad) {
        this.especialidad = especialidad;
    }

    public void setExperiencia(int experiencia) {
        this.experiencia = experiencia;
    }

    public Date getFecha_inscripcion() {
        return fecha_inscripcion;
    }

    public void setFecha_inscripcion(Date fecha_inscripcion) {
        this.fecha_inscripcion = fecha_inscripcion;
    }

    public String getNombre_usuario() {
        return nombre_usuario;
    }

    public void setNombre_usuario(String nombre_usuario) {
        this.nombre_usuario = nombre_usuario;
    }

    public void crearUsuario(String nombre_usuario, String contraseña, int experiencia, String nombre, String especialidad) {
        try {
            Date fecha_inicio = new Date();
            persistencia.PersistenciaUsuario.getInstance().insert(nombre_usuario, contraseña, experiencia, fecha_inicio, true, nombre, especialidad);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }
    }

    public void crearContacto(String nombre_usuario, String nombre_usuario_contacto) {
        try {
            persistencia.PersistenciaUsuario.getInstance().insertContactos(nombre_usuario, nombre_usuario_contacto);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }

    }

    public void modificarUsuario(String nombre_usuario, String contraseña, int experiencia,int experienciaExtra, String nombre, String especialidad) {
        try {
            persistencia.PersistenciaUsuario.getInstance().update(nombre_usuario, contraseña, experiencia, experienciaExtra, nombre, especialidad);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }
    }

    public void bajaUsuario(String nombre_usuario) {
        try {
            persistencia.PersistenciaUsuario.getInstance().baja(nombre_usuario);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }
    }

    public List<Usuario> traerUsuarios(String nombre_usuario) {
        List<Usuario> usuarios = new ArrayList<Usuario>();
        try {
            usuarios = persistencia.PersistenciaUsuario.getInstance().select(nombre_usuario);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }
        return usuarios;
    }

    public List<Usuario> traerContactos(String nombre_usuario) {
        List<Usuario> usuarios = new ArrayList<Usuario>();
        try {
            usuarios = persistencia.PersistenciaUsuario.getInstance().selectContactos(nombre_usuario);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }
        return usuarios;
    }
    public List<Usuario> Actualizar() {
        List<Usuario> usuarios = new ArrayList<Usuario>();
        try {
           persistencia.PersistenciaUsuario.getInstance().update("", "", 0, 0, "", "");
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }
        return usuarios;
    }

    public List<Usuario> traerSujerencias(String nombre_usuario, String especialidad) {
        List<Usuario> usuarios = new ArrayList<Usuario>();
        try {
            usuarios = persistencia.PersistenciaUsuario.getInstance().selectSujerencias(nombre_usuario, especialidad);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }
        return usuarios;
    }

    public void dejarEmpresa(String nombre_usuario, int rut) {
        try {
            persistencia.PersistenciaUsuario.getInstance().dejarEmpresa(nombre_usuario, rut);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }
    }

    public List<Usuario> traerEmpleados(int rut, int t) {
        List<Usuario> usuarios = new ArrayList<Usuario>();
        try {
            usuarios = persistencia.PersistenciaUsuario.getInstance().selectEmpleados(rut, t);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }
        return usuarios;
    }

    public List<Usuario> traerUsuarioMasCotizado() {
        List<Usuario> usuarios = new ArrayList<Usuario>();
        try {
            usuarios = persistencia.PersistenciaUsuario.getInstance().selectUsuarioMasCotizado();
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }
        return usuarios;
    }

    public List<Usuario> traerSujerenciasAContratar(String especialidad, int vhu, int rut) {
        List<Usuario> usuarios = new ArrayList<Usuario>();
        try {
            usuarios = persistencia.PersistenciaUsuario.getInstance().selectSujerenciasAContratar(especialidad, vhu, rut);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }
        return usuarios;
    }
}
